# -*- coding: utf-8 -*-
"""
Created on Tue Apr  6 09:21:23 2021

@author: Administrator
"""

import pandas as pd
import os

path = r'C:\Users\Administrator\Desktop\内部往来核对'

os.chdir(path)
name_dict = {
    '省水利水电公司本部':'云南省水利水电工程有限公司',
    '三公司机关':'云南省水利水电工程有限公司第三公司',
    '一公司机关':'云南省水利水电工程有限公司第一分公司',
    '大理分公司机关':'云南省水利水电工程有限公司大理分公司',
    '贵州分公司机关':'云南省水利水电工程有限公司贵州分公司',
    '路桥分公司机关':'云南省水利水电工程有限公司路桥分公司',
    '服务分公司机关':'云南省水利水电工程有限公司服务分公司',
}

# 内行核对必须输入两个表格：内部银行.xls 、银行存款.xls
# 两个表格内只能有以下三个字段：
# 项目辅助核算名称    方向    期末余额本币


df_source =pd.read_excel('内部银行1.xls',names=['A', 'B', 'C'])
df_dest =pd.read_excel('银行存款1.xls',names=['A', 'B', 'C'])

df_source = df_source[(df_source['B']=='借')|(df_source['B']=='贷')]
df_source = df_source[df_source['A']!='总计']
df_source = df_source[~df_source['A'].isnull()]

df_source['C'] = df_source['C'].astype(float)

df_source.columns = ['名称', '内行方向', '内行金额']
for key, value in name_dict.items():
    df_source['名称'] = df_source['名称'].map(lambda x:x.replace(key, value))
df_source = df_source.groupby(by = ['名称','内行方向'], as_index =False)['内行金额'].sum()

df_dest = df_dest[(df_dest['B']=='借')|(df_dest['B']=='贷')]
df_dest = df_dest[(df_dest['A']!='总计')&(df_dest['A']!='主体帐簿累计')&(df_dest['A']!='项目辅助核算名称')]
df_dest['C'] = df_dest['C'].astype(float)

df_dest.columns = ['名称', '银行方向', '银行金额']
df_dest = df_dest[~df_dest['名称'].isnull()]
for key, value in name_dict.items():
    df_dest['名称'] = df_dest['名称'].map(lambda x:x.replace(key, value))
df_dest = df_dest.groupby(by = ['名称','银行方向'], as_index =False)['银行金额'].sum()

df_res = pd.merge(df_source, df_dest, how ='left', on = '名称')

def check_the_same(a,b):  # 定义计算函数
    if a == b :
        res = '平'
    else:
        res = '不平'
    return res

df_res['校验结果'] = df_res.apply(lambda x:check_the_same(x.内行金额, x.银行金额),axis =1)
df_res.sort_values(by = '名称',ascending = True,inplace=True)

with pd.ExcelWriter('内行检查结果.xlsx') as f:
    df_res.to_excel(f, index = False)